Sve vrednosti neke promenljive ili konstante ili izraza moraju pripadati nekom od tipova koji su definisani u jeziku.
Tipom se zadaje:
- skup mogućih vrednosti promenljivih,
- skup operacija koje se mogu izvršavati nad promenljivim tog tipa i
- način registrovanja promenljivih u računar.
Osnovni tipovi podataka u Paskalu su:
- Celobrojni tip (integer),
- Realni tip (real),
- Logički tip (boolean),
- Znakovni tip (char) i
- Stringovni (string) tip.
Za celobrojni i realni tip postoje podtipovi.
Celobrojni tip podataka
Numerički podaci (brojevi) su, kao i u matematici, organizovani u skupove. Skup celih brojeva koji u matematici obično označavamo sa Z sadrži sve cele brojeve : ... -2,-1,0,1,2... kojih ima beskonačno mnogo. U programskom jeziku Paskal, kao i u gotovo svim ostalim programskim jezicima, uvek moramo paziti na činjenicu da tipovi podataka koje koristimo za opis pojedinih matematičkih skupova su zapravo njihovi podskupovi, koji, dakle, imaju domen.
Ukoliko deklarišemo promenljivu n u odeljku za deklaraciju na sledeći način:
var n: integer;
mi smo time zapravo "rekli" računaru da određeni deo memorije odvoji (stručan izraz: alocira) za tu promenljivu. Za promenljivu tipa integer Turbo Paskal će odvojiti dva bajta. Praktično to znači da promenljiva tipa integer može "zapamtiti" bilo koji broj iz opsega: -32768..32767. I baš taj opseg predstavlja domen za tip integer.
Ukoliko dodelimo neku vrednost promenljivoj n tada kažemo da smo je definisali.
Dakle pošto je promenljiva n tipa integer možemo joj dodeliti npr. broj 20 (n:=20;) i ta vrednost će biti dobro sačuvana.
Ukoliko pokušamo da joj dodelimo vrednost 40000 (n:=40000;) Paskal (tj. radno okruženje) će prepoznati grešku i ispisaće odgovarajuću poruku koja nam ukazuje na grešku.
Ali, obratimo pažnju na sledeći primer:
Program greska;
var n: integer;
Begin
n:=20000;
n:=2*n;
end.
U ovom primeru greška se javila za vreme izvršavanja programa jer je program pokušao da upiše vrednost 40000 u promenljivu tipa integer. Veći problem je taj što je program uspeo da dodeli vrednost promenljivoj ali je ta vrednost sačuvana kao -25536, dakle pogrešno! Greške koje se javljaju za vreme izvršavanja programa tradicionalno se nazivaju bagovi. To su greške koje su napravili ljudi za vreme pisanja programa , a ne računari.
Zaključak je sledeći: računari pomažu ljudima da pišu programe, ali im ne mogu uvek pomoći. Zbog toga je potrebna posebna pažnja prilikom pisanja programa koji manipulišu sa numeričkim vrednostima.
Celobrojni tipovi
Ime ; domen ; veličina memorije koju promenljiva zauzima (u bajtima)
byte, 0..255, 1
shortint, -128..127, 1
integer, -32768..32767, 2
word, 0..65535, 2
longint:, -2147483648..2147483647, 4
Standardne operacije koje se mogu izvršiti nad ovim tipovima su : *, div, mod, +, -.
Prioritet izvršavanja operacija je sledeći: *, div i mod imaju viši prioritet of + i - .
Operacije istog prioriteta se izvršavaju sleva nadesno, npr. 18 div 2 * 3 = 27.
operacije poređenja su: = , <> (različito) , <, >, <= (manje ili jednako), >= (veće ili jednako). Operacije poređenja vraćaju vrednosti logičkog tipa (boolean), o čemu će biti više reči kasnije.
Standardne funkcije paskala koje možemo primeniti na vrednostima celobrojnog tipa su:
funkcije koje vraćaju vrednosti celobrojnog tipa su:
abs(x) – apsolutna vrednost od x
sqr(x) – kvadrat od x
succ(x) – sledbenik od x, tj. x+1
pred(x) – prethodnik od x, tj. x-1
funkcije koje vraćaju vrednosti realnog tipa su:
sin(x) - sinus od x
cos(x) – kosinus od x
arctan(x) arkus tanges od x
ln(x) – prirodni logaritam od x
exp(x) – stepen x za osnovu e
sqrt(x) – kvadratni koren iz x
funkcija koja vraća vrednost logičkog tipa je:
odd(x) ima vrednost true ako je x neparno, u protivnom je false.